﻿using SIIE_ERP.BaseDatos;
using SIIE_ERP.BaseDatos.Compras.Transacciones;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace Elysium.Demo
{
    /// <summary>
    /// Lógica de interacción para Window1.xaml
    /// </summary>
    public partial class WindowDescarga : Elysium.Controls.Window
    {
        int Id_Documento;
        Documentos_Id Type_Documento;
        string RFC;
        string Usuario;

        private byte[] GetBytes(string str)
        {
            byte[] bytes = new byte[str.Length * sizeof(char)];
            System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
            return bytes;
        }

        public WindowDescarga(int Id_Documento, Documentos_Id Type_Documento, string RFC, string Usuario)
        {
            InitializeComponent();

            this.Id_Documento = Id_Documento;
            this.Type_Documento = Type_Documento;
            this.RFC = RFC;
            this.Usuario = Usuario;

            this.Hide();

            Documento_Compras Docto = new Documento_Compras(RFC, Usuario);
            DataTable MiDocto = Docto.Get_Documento_By_Id(Type_Documento, Id_Documento);
            try
            {
                byte[] MiPDF = (byte[])(MiDocto.Rows[0]["PDF"]);
                byte[] MiXML = (byte[])(MiDocto.Rows[0]["XML"]);
        

            if (MiPDF.Length > 0 && MiXML.Length > 0)
            {                
                System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
                fbd.Description = "Elija la carpeta donde desea descargar su CFDi";
                System.Windows.Forms.DialogResult result = fbd.ShowDialog();

                if (result == System.Windows.Forms.DialogResult.OK)
                {
                    string Tabla = "";
                    if (Type_Documento == Documentos_Id.Doc_FacturaProveedor)
                        Tabla = "FacturaProveedor_";
                    else if (Type_Documento == Documentos_Id.Doc_NotaCreditoProveedor)
                        Tabla = "NotaCreditoProveedor_";
                    else if (Type_Documento == Documentos_Id.Doc_DevolucionProveedor)
                        Tabla = "DevolucionProveedor_";

                    string GuidPDF = Guid.NewGuid().ToString() + ".pdf";
                    string GuidXML = Guid.NewGuid().ToString() + ".xml";

                    File.WriteAllBytes(Directory.GetCurrentDirectory() + "\\" + GuidPDF, MiPDF);
                    File.WriteAllBytes(Directory.GetCurrentDirectory() + "\\" + GuidXML, MiXML);

                    WebClient clientXML = new WebClient();
                    clientXML.DownloadFile(new Uri(Directory.GetCurrentDirectory() + "\\" + GuidXML),
                        fbd.SelectedPath + "\\" + Tabla + RFC + "_" + MiDocto.Rows[0]["Foto_Serie"].ToString() + MiDocto.Rows[0]["Secuencia"].ToString() + ".xml");

                    WebClient clientPDF = new WebClient();
                    clientPDF.DownloadFile(new Uri(Directory.GetCurrentDirectory() + "\\" + GuidPDF),
                        fbd.SelectedPath + "\\" + Tabla + RFC + "_" + MiDocto.Rows[0]["Foto_Serie"].ToString() + MiDocto.Rows[0]["Secuencia"].ToString() + ".pdf");

                    MessageBox.Show("Archivos CFDi descargados correctamente.");

                    try
                    {
                        File.Delete(Directory.GetCurrentDirectory() + "\\" + GuidPDF);
                    }
                    catch (Exception)
                    {

                    }

                    try
                    {
                        File.Delete(Directory.GetCurrentDirectory() + "\\" + GuidXML);
                    }
                    catch (Exception )
                    {

                    }

                    this.Close();
                }
                else
                {
                    MessageBox.Show("Se canceló la descarga de CFDi.");
                    this.Close();
                }
            }
                
           
            else
            {
                MessageBox.Show("Usted no ha subido al sistema sus archivos correspondientes al CFDi de este Documento.");
                this.Close();
            }
            }
            catch (Exception)
            {

                MessageBox.Show("Usted no ha subido al sistema sus archivos correspondientes al CFDi de este Documento.");
                this.Close();
            }
        }


    }
}
